//
//  CZWelcomeController.swift
//  weibo27
//
//  Created by mac on 16/4/18.
//  Copyright © 2016年 it.cast. All rights reserved.
//

import UIKit
import SDWebImage

class CZWelcomeController: UIViewController {
    
    // 设置界面 视图的层次结构
    override func loadView() {
        
        view = backImageView
        
        setupUI()
    }
    
    // MARK: 两种懒加载方式
    //背景图片
    private lazy var backImageView:UIImageView = UIImageView(imageName: "ad_background")
    //头像图片
    private lazy var iconView: UIImageView = {
        
        let iv = UIImageView(imageName: "avatar_default_big")
        
        iv.layer.cornerRadius = 50
        iv.layer.masksToBounds = true
        
        return iv
    }()
    
    private lazy var text: UILabel = UILabel(title: "欢迎归来", fontSize: 18)
    
    // 视图加载完成后的后续处理，不用关心图像的缩放问题
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //这里就体现了单例的好处。首先进了这里就说明用户是再一次的登录，只需要拿出来显示就行
        iconView.sd_setImageWithURL(CZUserAccountViewModel.shareModel.avatar_largeUrl, placeholderImage: UIImage(named:"avatar_default_big"))
    }
    
    //视图已经显示，通常可以动画/键盘的处理
    //做动画都要在viewDidAppear做
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        
        //跟新控件的约束 .multipliedBy(0.5)是一个只读属性，一经设置就不可以修改，可能会报错
        iconView.snp_updateConstraints { (make) -> Void in
            
            make.bottom.equalTo(view.snp_bottom).offset(-self.view.bounds.height + 200)
        }
        
        /*
        自定布局系统会根据设置的约束，自动的计算控件的frame 并在layoutSubViews中设置frame
        
        自动布局的原理：当有一个运行循环启动以后自定布局系统，会收集所有的约束变化
        在运行循环结束前，调用layoutSubViews函数 ，统一的设置frame
        如果希望某些控件结束提前更新，使用layoutIfNeeded()函数 进行控件frame的位置的调整
        */
        
        //设置动画
        text.alpha = 0
        UIView.animateWithDuration(1.5, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 10, options: [], animations: { () -> Void in
            
            //修改所以‘可动画’属性
            self.view.layoutIfNeeded()
            
            }) { (_) -> Void in
                
                //头像显示之后再显示文字
                UIView.animateWithDuration(0.5, animations: { () -> Void in
                    self.text.alpha = 1
                    }, completion: { (_) -> Void in
                        //发送通知切换控制器
                        NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootViewControllerNotification, object: nil)
                })
                
        }
        
    }
    
}

extension CZWelcomeController{
    func setupUI(){
        
        //添加头像
        view.addSubview(iconView)
        view.addSubview(text)
        
        iconView.snp_makeConstraints { (make) -> Void in
            
            make.centerX.equalTo(view.snp_centerX)
            make.bottom.equalTo(view.snp_bottom).offset(-200)
            make.height.equalTo(100)
            make.width.equalTo(100)
            
            UIView .animateWithDuration(2.0, animations: { () -> Void in
                
                //                make
            })
            text.snp_makeConstraints(closure: { (make) -> Void in
                make.centerX.equalTo(iconView.snp_centerX)
                make.bottom.equalTo(iconView.snp_bottom).offset(30)
            })
            
        }
    }
}


